from typing import *


class Demo(object):
    def __init__(self):
        self.att01 = '1'
        self.att02 = '2'


def fun01(d: Demo, c: List[int]):  # 参数d类型应当为Demo对象,参数c为list类型并且list中的值必须为int
    print(d.att01)
    print(c)
    pass
    ...
    print(c)


def fun02(d: tuple, f: list, m: Union[int, str]):
    print(f)
    print(d)
    print(m)


""""

from typing import List, Tuple, Dict

a1: List[int] # a1是一个list，其中的数据都是int类型，没有赋值
a2: List[str] = ['1','2','3']# a2是一个list，其中的数据都是int类型，赋值为['1','2','3']
b1: Tuple[int] # a1是一个tuple，其中的数据都是int类型，没有赋值
b2: Tuple[float] = (1.1,2.2,3.3)# a2是一个tuple，其中的数据都是float类型，赋值为[1.1,2.2,3.3]
c1: [Dict[str, int]] = {} # c1是一个dict，其中key为str类型，value为int型，没有赋值
c2: [Dict[str, int]] = {'a':1, 'b':2, 'c':3} # c1是一个dict，其中key为str类型，value为int型，赋值为{'a':1, 'b':2, 'c':3}

"""

fun01(d=Demo(), c=[1])
fun02(d=('1',), f=['1'], m=1)

print(fun02.__annotations__)
